import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class Metodo {
	/**
	 * Metodo para extraer numeros enteros separados por punto y coma de un
	 * archivo file
	 * 
	 * @param file
	 *            file del cual vamos a extraer los numeros enteros
	 * @return devuelve un ArrayList con los valores de int encontrados.
	 *         Devuelve null en el caso que no hayan valores enteros
	 */
	public ArrayList extraerEnteros(File file) {
		FileReader lector = null;
		ArrayList lista = null;
		try {
			lector = new FileReader(file);
		} catch (FileNotFoundException e) {
		}
		int i = 0;
		String aux1 = "";
		int aux = 0;
		try {
			lista = new ArrayList();
			while ((i = lector.read()) != -1) {
				if ((char) i != ';') {
					aux1 += (char) i;
				} else {
					aux = Integer.parseInt(aux1);
					lista.add(aux);
					aux1 = "";
				}
			}
			lector.close();
			return lista;
		} catch (IOException e) {
			System.out.println("Imposible leer archivo");
		}
		return lista;
	}

	/**
	 * metodo para crear un archivo
	 * 
	 * @param file
	 *            archivo con la ruta deseada para crear
	 */
	public void crearArchivo(File file) {
		try {
			file.createNewFile();
		} catch (IOException e) {
			System.out.println("Fichero no creado");
		}
	}

	/**
	 * metodo para escribir numeros enteros en un archivo
	 * 
	 * @param file
	 *            archivo donde vamos a escribir los numeros enteros
	 * @param lista
	 *            ArrayList del cual sacaremos los enteros para escribir
	 */
	public void escribirInt(File file, ArrayList lista) {

		FileOutputStream fileOut = null;
		DataOutputStream dataOut = null;
		try {
			fileOut = new FileOutputStream(file);
			dataOut = new DataOutputStream(fileOut);

			for (int i = 0; i < lista.size(); i++) {
				int auxiliar = (int) lista.get(i);
				dataOut.writeInt(auxiliar);
			}
		} catch (Exception e) {
			try {
				dataOut.close();
			} catch (IOException e1) {
			}
		}
	}

	/**
	 * Metodo para mostrar por pantalla los numeros Enteros de un archivo
	 * 
	 * @param file
	 *            file del cual vamos a leer los enteros.
	 */
	public void mostrarInt(File file) {
		FileInputStream fileIn = null;
		DataInputStream dataIn = null;
		try {
			fileIn = new FileInputStream(file);
			dataIn = new DataInputStream(fileIn);
			int i = 0;
			System.out.println("Mostrando numeros");
			try {
				while (true) {
					i = dataIn.readInt();
					System.out.println((int) i);
				}
			} catch (EOFException e) {
			}
		} catch (Exception e) {
		} finally {
			try {
				dataIn.close();
			} catch (IOException e) {
			}
		}
	}
}
